﻿#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//int main()
//{
//	int a = 10000;
//	FILE* pf = fopen("test.txt", "wb");
//	fwrite(&a, 4, 1, pf);//⼆进制的形式写到⽂件中
//		fclose(pf);
//	pf = NULL;
//	return 0;
//}


//int main()
//{
//	FILE* pf = fopen("test.txt", "r");
//	//fopen函数打开⽂件,fopen最后一个参数是文件操作方式
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	fclose(pf);
//	//fclose函数关闭文件
//	pf = NULL;
//}

//int main()
//{
//	//打开文件
//	FILE* pf = fopen("test.txt","");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//写文件
//	/*fputc('a',pf);
//	fputc('b', pf);
//	fputc('c', pf);*/
//	char c = 0;
//	for (c = 'a';c <= 'z';c++)
//	{
//		fputc(c,pf);
//	}
//
//
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}


//int main()
//{
//	//打开文件
//	FILE* pf = fopen("test.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//读文件
//	/*int  c = fgetc(pf);
//	printf("%c",c);
//	c = fgetc(pf);
//	printf("%c", c);
//	c = fgetc(pf);
//	printf("%c", c);*/
//	int a = 0;
//	while ((a = fgetc(pf)) != EOF)
//	{
//		printf("%c",a);
//	}
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//int main()
//{
//	//打开文件
//	FILE* pf = fopen("test.txt", "w");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//写文件
//	fputs("hello\n",pf);
//	fputs("wwmymz",pf);
//	
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}


//int main()
//{
//	//打开文件
//	FILE* pf = fopen("test.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//读文件
//	/*char a[10] = { 0 };
//	fgets(a,10,pf);
//	printf("%s",a);
//	fgets(a, 10, pf);
//	printf("%s", a);*/
//	char a[20] = { 0 };
//	while (fgets(a,10,pf) != NULL)
//	{
//		printf("%s",a);
//	}
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//struct Stu
//{
//	char name[20];
//	int age;
//	float score;
//};
//
//int main()
//{
//	struct Stu s = { "zhangsan",20,99.5f };	
//	FILE * pf = fopen("test.txt","w");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//以文本的形式写文件
//	fprintf(pf,"%s %d %f",s.name,s.age,s.score);
//
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}


//struct Stu
//{
//	char name[20];
//	int age;
//	float score;
//};
//
//int main()
//{
//	struct Stu s = { 0 };
//	FILE* pf = fopen("test.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//从test.txt中读取数据，存到结构体变量s中
//	fscanf(pf, "%s %d %f", s.name, &(s.age), &(s.score));
//	printf("%s %d %f\n", s.name, s.age, s.score);
//
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}



//struct Stu
//{
//	char name[20];
//	int age;
//	float score;
//};
//int main()
//{
//	char buf[100] = { 0 };
//	struct Stu s = { "zhangsan",20,99.5f };
//	sprintf(buf, "%s %d %f", s.name, s.age, s.score);
//	//以字符串的形式写数据
//	printf("%s\n", buf);
//
//	struct Stu b = { 0 };
//	//在字符串中读取数据，存到结构体变量b中
//	sscanf(buf, "%s %d %f", b.name, &(b.age), &(b.score));
//	//按照格式打印
//	printf("%s %d %f\n", b.name, b.age, b.score);
//	return 0;
//}



//int main()
//{
//	int arr[] = { 1,2,3,4 };
//	FILE* pf = fopen("test.txt","wb");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	fwrite(arr, sizeof(arr[0]), sz,pf);
//
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}


//int main()
//{
//	int arr[4] = {0};
//	FILE* pf = fopen("test.txt","rb");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	int i = 0;
//	while (fread(arr+i,sizeof(arr[0]),1,pf))
//	{
//		printf("%d ",arr[i]);
//		i++;
//	}
//
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}


//int main()
//{
//	FILE* pf = fopen("test.txt","r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	int ch = 0;
//	fseek(pf,-2,SEEK_END);
//	ch = fgetc(pf);
//	printf("%c",ch);
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}




//int main()
//{
//	FILE* pf = fopen("test.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	int ch = 0;
//	fseek(pf,2,SEEK_CUR);
//	//fseek(pf, 2, SEEK_SET);
//	//fseek(pf, -2, SEEK_END);
//	printf("%d\n",ftell(pf));
//	rewind(pf);
//	printf("%d\n",ftell(pf));
//	ch = fgetc(pf);
//	printf("%c", ch);
//
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}


//#include <stdio.h>
//#include <windows.h>
////VS2019 WIN11环境测试
//
//int main()
//{
//	FILE* pf = fopen("test.txt", "w");
//	fputs("abcdef", pf);//先将代码放在输出缓冲区
//
//		printf("睡眠10秒已经写数据了，打开test.txt⽂件，发现⽂件没有内容\n");
//			Sleep(10000);
//	printf("刷新缓冲区\n");
//		fflush(pf);//刷新缓冲区时，才将输出缓冲区的数据写到⽂件（磁盘）
//	//注：fflush在⾼版本的VS上不能使⽤了
//		printf("再睡眠10秒此时，再次打开test.txt⽂件，⽂件有内容了\n");
//			Sleep(10000);
//	fclose(pf);
//	//注：fclose在关闭⽂件的时候，也会刷新缓冲区
//pf = NULL;
//	return 0;
//}


//#include <stdio.h>
//#include <stdlib.h>
//int main(void)
//{
//	int c; //注意：int，⾮char，要求处理EOF
//		FILE* fp = fopen("test.txt", "r");
//	if (!fp) {
//		perror("File opening failed");
//		return EXIT_FAILURE;
//	}
//	//fgetc 当读取失败的时候或者遇到⽂件结束的时候，都会返回EOF
//		while ((c = fgetc(fp)) != EOF) 
//		{
//			putchar(c);
//		}
//	
//	//判断是什么原因结束的
//		if (ferror(fp))
//			puts("I/O error when reading");
//		else if (feof(fp))
//			puts("End of file reached successfully");
//	fclose(fp);
//}